package com.saver.core.processor;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import android.database.Cursor;
import android.telephony.SmsMessage;
import android.util.Log;

import com.saver.core.domain.Banco;
import com.saver.core.domain.Categoria;
import com.saver.core.domain.Establecimiento;
import com.saver.core.domain.Transaccion;

public class SorterSMS {

	public List<Transaccion> process(SmsMessage currentMessage){

		String sms = "";
		Date date = new Date(currentMessage.getTimestampMillis());
		String number = currentMessage.getDisplayOriginatingAddress();
		String body = currentMessage.getDisplayMessageBody();
		return getTransacction( date, 
				    	 number,
				    	 body );
	}
	
	public List<Transaccion> process(Cursor cur){

		String sms = "";
		int dateColumn = cur.getColumnIndex("date");
		int numberColumn = cur.getColumnIndex("address");
		int bodyColumn = cur.getColumnIndex("body");
		Date date = new Date(Long.parseLong(cur.getString(dateColumn)));
		String number = cur.getString(numberColumn);
		String body = cur.getString(bodyColumn);
//		body = body.substring(body.indexOf(":")+1).trim();
		return getTransacction( date, 
				    	 number,
				    	 body );
		
	}
	
	public List<Transaccion> getTransacction(Date date, 
									   String number,
									   String body ){
		
		//ProcessSMSFactory factory = ProcessSMSFactory.getInstance();
		//ProcessorSMS processSMS = factory.getProcessSMS(number);
		
//		if (processSMS != null) {
//			//return processSMS.process(body, date);
//		}
//		
		return new ArrayList<Transaccion> (0);
		
		/*
		Transaccion transaccion = null;
		Scotiabank  pscotiabank = new Scotiabank ();
		BBVA  bbva = new BBVA ();
		BCP bcp = new BCP();
		//SCOTIABANK
		if (number.equals("7270")) {
			if (pscotiabank.validarSMSScotiaBank(body)) {
				transaccion = new Transaccion();
				transaccion.setIdBanco(1);
				transaccion.setIdCategoria(null);
				transaccion.setCuenta("");
				transaccion.setFecha(date);
				transaccion.setMonto(pscotiabank.extraerImporte((body)));
				transaccion.setDetalle(pscotiabank.procesarScotiaBank(body));
//				SMS += "SCOTIABANK : IMPORTE S/. " + TRANSACCION.GETMONTO()
//						+ " FECHA="
//						+ SDF.FORMAT(TRANSACCION.GETFECHA()).TOSTRING()
//						+ " DETALLE GASTO=" + TRANSACCION.GETDETALLE()
//						+ "\N";
			}
		}
		if (number.equals("595")) {
			if (bbva.validarSMSBBVA(body)) {
				transaccion = new Transaccion();
				transaccion.setIdBanco(2);
				transaccion.setIdCategoria(null);
				transaccion.setCuenta("");
				transaccion.setFecha(date);
				transaccion.setMonto(bbva.extraerImporte(body));
				transaccion.setDetalle(bbva.procesarBBVA(body));
				transaccion.setCodigoEstablecimiento(bbva.obtenerNombreEstablecimiento(body));
//				sms += "BBVA : Importe S/. " + transaccion.getMonto()
//						+ " fecha="
//						+ sdf.format(transaccion.getFecha()).toString()
//						+ " detalle gasto=" + transaccion.getDetalle()
//						+ " establecimiento=" + transaccion.getEstablecimiento().getNombre()
//						+ "\n";
			}
		}
		if (number.equals("227")) {
			if (bcp.validarSMSBCP(body)) {
				transaccion = new Transaccion();
				transaccion.setIdBanco(2);
				transaccion.setIdCategoria(null);
				transaccion.setCuenta("");
				transaccion.setFecha(date);
				transaccion.setMonto(bcp.extraerImporte(body));
				transaccion.setDetalle(bcp.procesarBCP(body));
				transaccion.setCodigoEstablecimiento(bcp.obtenerNombreEstablecimiento(body));
//				sms += "BBVA : Importe S/. " + transaccion.getMonto()
//						+ " fecha="
//						+ sdf.format(transaccion.getFecha()).toString()
//						+ " detalle gasto=" + transaccion.getDetalle()
//						+ " establecimiento=" + transaccion.getEstablecimiento().getNombre()
//						+ "\n";
			}
		}
		return transaccion;*/
	}


}
